package pkg

import (
	"context"
	"log"
	"zy/config"
	//"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

func OssFile(dst, filename string) {
	data := config.Conf.Oss
	// 加载默认配置并设置凭证提供者和区域
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewStaticCredentialsProvider(data.Id, data.Secret)).
		WithRegion(data.WithRegion)

	// 创建OSS客户端
	client := oss.NewClient(cfg)

	// 创建上传管理器
	u := client.NewUploader()

	// 定义本地文件路径，需要替换为您的实际本地文件路径和文件名称
	localFile := dst

	// 执行上传文件的操作
	result, err := u.UploadFile(context.TODO(),
		&oss.PutObjectRequest{
			Bucket: oss.Ptr(data.Bucket),
			Key:    oss.Ptr(filename),
			Acl:    oss.ObjectACLPrivate},
		localFile)
	if err != nil {
		log.Fatalf("failed to upload file %v", err)
	}

	// 打印上传文件的结果
	log.Printf("upload file result:%#v\n", result)
}

//func Watermark() {
//	// 从环境变量中获取访问凭证。运行本代码示例之前，请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
//	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
//	if err != nil {
//		fmt.Println("Error:", err)
//		os.Exit(-1)
//	}
//
//	// 创建OSSClient实例。
//	// yourEndpoint填写Bucket对应的Endpoint，以华东1（杭州）为例，填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
//	// yourRegion填写Bucket所在地域，以华东1（杭州）为例，填写为cn-hangzhou。其它Region请按实际情况填写。
//	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
//	clientOptions = append(clientOptions, oss.Region("yourRegion"))
//	// 设置签名版本
//	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
//	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
//	if err != nil {
//		HandleError(err)
//	}
//
//	// 指定图片所在Bucket的名称，例如examplebucket。
//	bucketName := "examplebucket"
//	bucket, err := client.Bucket(bucketName)
//	if err != nil {
//		HandleError(err)
//	}
//	// 指定图片名称。如果图片不在Bucket根目录，需携带文件完整路径，例如exampledir/example.jpg。
//	ossImageName := "exampledir/example.jpg"
//	// 生成带签名的URL，并指定过期时间为600s。（最长有效时间为32400秒）
//	signedURL, err := bucket.SignURL(ossImageName, oss.HTTPGet, 600, oss.Process("image/format,png"))
//	if err != nil {
//		HandleError(err)
//	} else {
//		fmt.Println(signedURL)
//	}
//}
